package day16;
//测试 多线程编程 -- 方式1::: 继承Thread类
public class Test4_Thread {
    public static void main(String[] args) {
        //4,测试
//        for (int i = 0; i < 10 ; i++) {
//            new MyThread().start();
//        }
        MyThread t = new MyThread();//单线程程序 -- 新建状态
        MyThread t2 = new MyThread();//模拟多线程
//        t.run();//只是一个简单的方法调用,没有多线程效果
//        t2.run();
        t.start();//5,启动线程!! 变成可运行状态
        t2.start();//7,Java 虚拟机调用该线程的 run 方法。
        //面试题: start()和run()的区别???
        //start()才是真正的启动线程,run()只是一个普通的方法调用
        /* 6,多线程程序运行结果的随机性,,多个线程抢占执行权
            Thread-0~~0
            Thread-1~~0
            Thread-0~~1
            Thread-1~~1
            Thread-0~~2
            Thread-0~~3
            Thread-1~~2
            Thread-0~~4
         */
    }
}
//1,自定义多线程程序
class MyThread extends Thread{
    //2,多线程编程里,要求把业务 放在重写 run()
    //generate-override methods-选中-ok
    @Override
    public void run() {//开始执行run()--运行状态
        //需求:打印10次线程名称
        for (int i = 0; i < 10; i++) {
            //3,调用父类的方法获取线程名称
            System.out.println(super.getName() +"~~"+ i);
        }
    }//run()执行完变成 终止状态
}


